www.gusucode.com > VC++ 电力学校学员管理系统(Access)-源码程序 > VC++ 电力学校学员管理系统(Access)-源码程序/code/DlgSelectStudent.cpp

    //Download by http://www.NewXing.com
// DlgSelectStudent.cpp : implementation file
//

#include "stdafx.h"
#include "AutoStuMis.h"
#include "DlgSelectStudent.h"
#include "AutoStuMisDoc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgSelectStudent dialog


CDlgSelectStudent::CDlgSelectStudent(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgSelectStudent::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgSelectStudent)
	m_sName = _T("");
	//}}AFX_DATA_INIT
	m_pStudent = NULL;
}


void CDlgSelectStudent::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgSelectStudent)
	DDX_Control(pDX, IDCANCEL, m_btnCancel);
	DDX_Control(pDX, ID_BUTTON_SELECT, m_btnSelect);
	DDX_Control(pDX, IDC_LIST1, m_list);
	DDX_Control(pDX, IDC_COMBO1, m_cbxSex);
	DDX_Text(pDX, IDC_EDIT1, m_sName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgSelectStudent, CDialog)
	//{{AFX_MSG_MAP(CDlgSelectStudent)
	ON_BN_CLICKED(ID_BUTTON_SELECT, OnButtonSelect)
	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgSelectStudent message handlers

CStudent* CDlgSelectStudent::SelectStudent()
{
	this->DoModal();
	//if(DoModal()==IDOK)
	//	return m_pStudent;
	//return NULL;
	return m_pStudent;
}

void CDlgSelectStudent::OnOK() 
{
	// TODO: Add extra validation here
	CAutoStuMisApp *pApp=(CAutoStuMisApp*)AfxGetApp();
	CString s;
	
	if(GetFocus()==&m_btnSelect)
		OnButtonSelect();
	else if(GetFocus()==&m_btnCancel)
		CDialog::OnCancel();
	else 
	{
		if(m_cbxSex.GetCurSel()>=0)
			m_cbxSex.GetWindowText(s);
		UpdateData();
		m_sName.TrimLeft();
		pApp->m_pDoc->FillStudentsToListctrl(&m_list,s,m_sName);  
	}
	//CDialog::OnOK();
}

void CDlgSelectStudent::OnButtonSelect() 
{
	// TODO: Add your control notification handler code here
	long ID = 0;
	int i,iState;
	int nItemSelected=m_list.GetSelectedCount();//所选表项数
	int nItemCount=m_list.GetItemCount();//表项总数
	if(nItemSelected<1) return;
	CAutoStuMisApp *pApp=(CAutoStuMisApp*)AfxGetApp();
	for(i=nItemCount-1;i>=0;i--)
	{
		iState=m_list.GetItemState(i,LVIS_SELECTED);
		if(iState!=0) 
		{
			ID=m_list.GetItemData(i);
			m_pStudent = (CStudent*)pApp->m_pDoc->GetItemByID(&pApp->m_pDoc->m_arrStudent,ID);
			if(m_pStudent)
				CDialog::OnOK();
		}
	}
}

BOOL CDlgSelectStudent::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	LONG lStyle;
	lStyle=GetWindowLong(m_list.GetSafeHwnd(),GWL_STYLE);//获取当前窗口类型
	lStyle&=~LVS_TYPEMASK; //清除显示方式位
	lStyle|=LVS_REPORT; //设置显示方式
	SetWindowLong(m_list.GetSafeHwnd(),GWL_STYLE,lStyle);//设置窗口类型
	m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);

	
	CAutoStuMisApp *pApp=(CAutoStuMisApp*)AfxGetApp();
	pApp->m_pDoc->FillStudentsToListctrl(&m_list,_T(""),_T("")); 
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgSelectStudent::OnSelchangeCombo1() 
{
	// TODO: Add your control notification handler code here
	CAutoStuMisApp *pApp=(CAutoStuMisApp*)AfxGetApp();
	CString s;
	if(m_cbxSex.GetCurSel()>=0)
		m_cbxSex.GetWindowText(s);
	UpdateData();
	m_sName.TrimLeft();
	pApp->m_pDoc->FillStudentsToListctrl(&m_list,s,m_sName);  
}